Context-bounded verification of thread pools
نویسندگان
چکیده
Thread pooling is a common programming idiom in which fixed set of worker threads are maintained to execute tasks concurrently. The workers repeatedly pick and them completion. Each task sequential, with possibly recursive code, communicate over shared memory. Executing can lead more new being spawned. We consider the safety verification problem for thread-pooled programs. parameterize two parameters: size thread pool as well number context switches each task. determines running how many times be swapped out while executing single task---like problems multithreaded programs, bounding important decidability. show that thread-pooled, context-bounded, Boolean programs EXPSPACE-complete, even if bound given binary. Our main result, EXPSPACE upper bound, derived using sequence succinct encoding techniques independent language-theoretic interest. In particular, we polynomial-time construction downward closures languages accepted by pushdown automata doubly nondeterministic finite automata. While there explicit exponential lower bounds on accepting closure, our result shows these compressed. significantly reduces computational power: contrast, only provided binary, but no pooling, becomes 3EXPSPACE-complete. Given high complexity related involving binary parameters, relatively low thread-pooling comes surprise.
منابع مشابه
Interrupt Verification via Thread Verification
Most of the research effort towards verification of concurrent software has focused on multithreaded code. On the other hand, concurrency in low-end embedded systems is predominantly based on interrupts. Low-end embedded systems are ubiquitous in safety-critical applications such as those supporting transportation and medical automation; their verification is important. Although interrupts are ...
متن کاملThread Verification vs. Interrupt Verification
Interrupts are superficially similar to threads, but there are subtle semantic differences between the two abstractions. This paper compares and contrasts threads and interrupts from the point of view of verifying the absence of race conditions. We identify a small set of extensions that permit thread verification tools to also verify interrupt-driven software, and we present examples of source...
متن کاملPrecise Thread-Modular Verification
Thread-modular verification is a promising approach for the verification of concurrent programs. Its high efficiency is achieved by abstracting the interaction between threads. The resulting polynomial complexity (in the number of threads) has its price: many interesting concurrent programs cannot be handled due to the imprecision of the abstraction. We propose a new abstraction algorithm for t...
متن کاملThe Case for Context-Bounded Verification of Concurrent Programs
Concurrent programs are difficult to get right. Subtle interactions among communicating threads in the program can result in behaviors unexpected to the programmer. These behaviors typically result in bugs that occur late in the software development cycle or even after the software is released. Such bugs are difficult to reproduce and difficult to debug. As a result, they have a huge adverse im...
متن کاملUnbounded-Thread Program Verification using Thread-State Equations
Infinite-state reachability problems arising from unboundedthread program verification are of great practical importance, yet algorithmically hard. Despite the remarkable success of explicit-state exploration methods to solve such problems, there is a sense that SMT technology can be beneficial to speed up the decision making. This vision was pioneered in recent work by Esparza et al. on SMT-ba...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
ژورنال
عنوان ژورنال: Proceedings of the ACM on programming languages
سال: 2022
ISSN: ['2475-1421']
DOI: https://doi.org/10.1145/3498678